import type { App } from 'vue';
import { createPinia } from 'pinia';
import { resetSetupStore } from './plugins';
import { useThemeStore } from './modules/theme';
import { useTabStore } from './modules/tab';
import { useRouteStore } from './modules/route';
import { useAuthStore } from './modules/auth';

/** Setup Vue store plugin pinia */
export function setupStore(app: App) {
  const store = createPinia();

  store.use(resetSetupStore);

  app.use(store);
}

export function useAppStore() {
  const themeStore = useThemeStore();
  const tabStore = useTabStore();
  const routeStore = useRouteStore();
  const authStore = useAuthStore();

  return {
    themeStore,
    tabStore,
    routeStore,
    authStore
  };
}

export { useThemeStore, useTabStore, useRouteStore, useAuthStore };
